(function($) {//format form query string to object
    $.fn.serializeFormJSON = function() {

        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
            if (o[this.name]) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };
})(jQuery);

// 表单提交前
function beforeSubmit(formData){
    showTips('Operation...', -1);
    $('.form-submit').button('loading');
    
    try 
    {  
        if(typeof(_beforeSubmit)=="function")  
        {

            var rs = _beforeSubmit();

            if(!rs) {
                $('.alert').remove();
            }

            return rs;
        }
    }catch(e)
    {
        //return false;
    }  
    return true;
}
// 表单提交后
function afterComplete(responseText){
    showTips(responseText.info, responseText.status);
    $('.form-submit').button('reset');
    if(responseText.status == 1) {
        try 
        {  
            if(typeof(eval(_afterComplete))=="function")  
            {
                _afterComplete(responseText);
            }
        }catch(e)
        {
        //alert("not function"); 
        }  
    }
    
    if(responseText.status == 0) {
        try 
        {  
            if(typeof(eval(_afterError))=="function")  
            {
                _afterError(responseText);
            }
        }catch(e)
        {
        //alert("not function"); 
        }  
    }
    
    if(responseText.status ==-1) {
        try 
        {  
            if(typeof(eval(_afterInfo))=="function")  
            {
                _afterInfo(responseText);
            }
        }catch(e)
        {
        //alert("not function"); 
        }  
    }
}

    
function jump(url){
    if(url == 'self') {
        window.location.reload(); 
    } else if(url == 'parent') {
        window.parent.location.reload();
    } else if(url == 'back') {
        history.back();
    } else {
        var delay = arguments[1] ? arguments[1] : 0; 
        window.setTimeout(function(){
            location.href=url
        },delay);
    }
}
// 显示 ajax 返回的信息
function showTips(tips,type){
    if(tips == 'undefined' || tips == undefined || tips == '' ) {
        tips = 'Operation...';
    }
    var cls ='';
    switch(type) {
        case 1 :
            cls = 'success';
            break;
        case 0 :
            cls = 'error';
            break;
        case -1 :
            cls = 'info';
            break;
    }
    var html  = '<div class="alert alert-'+cls+'">';
    html += '<button data-dismiss="alert" class="close" type="button">×</button>';
    html += '<strong>Tips：</strong>'+tips+'</div>';
    $('#notice').show().html(html);
    setTimeout(function(){
        $('#notice').empty();
    },30000);
}

/**
 * id 数据库字段
 * path 配置文件里面的上传配置路径
 * 文件上传处理的Action
 *
 */
function uploadBase(id,path,url){
    $('#'+id+'_upload').uploadify({
        'formData'     : {
            'ajax' : '1'
        },
        height:30,
        width  : 136,
        buttonText : 'Select Files...',
        fileTypeDesc : 'Image Files OR Zip OR AIR',
        fileTypeExts : '*.gif; *.jpg; *.png; *.jpeg; *.zip; *.air', 
        swf      : TP_JS+'/upload/uploadify.swf',
        uploader : TP_APP+'/Upload/'+url,

        onUploadSuccess : function(file, data, response) {
            var data = eval('('+data+')');
            //alert(data.info);
            if(data.data) {
                $('#'+file.id).addClass('uploadify-success');
                var imgUrl = SITE_URL+'/'+path+data.info;
                var img = '<img class="tip" src="'+imgUrl+'" />';
                $('.'+id+'_show').html(img);
                $('#'+id).val(data.info);
            }else{
                $('#'+file.id).addClass('uploadify-error');
                    
            }
        } 
    });
}

function showStatus(status){
    if(status == 1) {
        return '<span class="badge badge-success ">On</span>';
    } else {
        return '<span class="badge badge-important">Off</span>';
    }
}
function showLanguage(language) {
    if(language == '') {
        return 'Default';
    }
    return language;
}
    
//格式化日期
Date.prototype.format = function(format) {
    var returnStr = '';
    var replace = Date.replaceChars;
    for (var i = 0; i < format.length; i++) {
        var curChar = format.charAt(i);
        if (replace[curChar]) {
            returnStr += replace[curChar].call(this);
        } else {
            returnStr += curChar;
        }
    }
    return returnStr;
};
Date.replaceChars = {
    shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    longMonths: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
    longDays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
 
    // Day
    d: function() {
        return (this.getDate() < 10 ? '0' : '') + this.getDate();
    },
    D: function() {
        return Date.replaceChars.shortDays[this.getDay()];
    },
    j: function() {
        return this.getDate();
    },
    l: function() {
        return Date.replaceChars.longDays[this.getDay()];
    },
    N: function() {
        return this.getDay() + 1;
    },
    S: function() {
        return (this.getDate() % 10 == 1 && this.getDate() != 11 ? 'st' : (this.getDate() % 10 == 2 && this.getDate() != 12 ? 'nd' : (this.getDate() % 10 == 3 && this.getDate() != 13 ? 'rd' : 'th')));
    },
    w: function() {
        return this.getDay();
    },
    z: function() {
        return "Not Yet Supported";
    },
    // Week
    W: function() {
        return "Not Yet Supported";
    },
    // Month
    F: function() {
        return Date.replaceChars.longMonths[this.getMonth()];
    },
    m: function() {
        return (this.getMonth() < 9 ? '0' : '') + (this.getMonth() + 1);
    },
    M: function() {
        return Date.replaceChars.shortMonths[this.getMonth()];
    },
    n: function() {
        return this.getMonth() + 1;
    },
    t: function() {
        return "Not Yet Supported";
    },
    // Year
    L: function() {
        return (((this.getFullYear()%4==0)&&(this.getFullYear()%100 != 0)) || (this.getFullYear()%400==0)) ? '1' : '0';
    },
    o: function() {
        return "Not Supported";
    },
    Y: function() {
        return this.getFullYear();
    },
    y: function() {
        return ('' + this.getFullYear()).substr(2);
    },
    // Time
    a: function() {
        return this.getHours() < 12 ? 'am' : 'pm';
    },
    A: function() {
        return this.getHours() < 12 ? 'AM' : 'PM';
    },
    B: function() {
        return "Not Yet Supported";
    },
    g: function() {
        return this.getHours() % 12 || 12;
    },
    G: function() {
        return this.getHours();
    },
    h: function() {
        return ((this.getHours() % 12 || 12) < 10 ? '0' : '') + (this.getHours() % 12 || 12);
    },
    H: function() {
        return (this.getHours() < 10 ? '0' : '') + this.getHours();
    },
    i: function() {
        return (this.getMinutes() < 10 ? '0' : '') + this.getMinutes();
    },
    s: function() {
        return (this.getSeconds() < 10 ? '0' : '') + this.getSeconds();
    },
    // Timezone
    e: function() {
        return "Not Yet Supported";
    },
    I: function() {
        return "Not Supported";
    },
    O: function() {
        return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + '00';
    },
    P: function() {
        return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + ':' + (Math.abs(this.getTimezoneOffset() % 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() % 60));
    },
    T: function() {
        var m = this.getMonth();
        this.setMonth(0);
        var result = this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/, '$1');
        this.setMonth(m);
        return result;
    },
    Z: function() {
        return -this.getTimezoneOffset() * 60;
    },
    // Full Date/Time
    c: function() {
        return this.format("Y-m-d") + "T" + this.format("H:i:sP");
    },
    r: function() {
        return this.toString();
    },
    U: function() {
        return this.getTime() / 1000;
    }
};
function getFormatTime(timestamp) {  
    if(timestamp == '' || timestamp == null) {
        return '空';
    }
    timestamp = timestamp.toString();
    if(timestamp.length != 13) {
        timestamp = parseInt(timestamp)*1000;
    }
    var date = (new Date(parseInt(timestamp)));
    return date.format('Y-m-d H:i:s');
}  


function showEmpty(value){
    if((value == '' || value == null) && ( value !== 0)){
        return '<i style="color:#AAA">Empty</i>';
    }
    return value;
}

function formatMoney(number, places, thousand, decimal) {
    if(number == null){
        return 0;
    }
    number = number.toString();
    number =number.substr(0,number.length-2)+'.'+ number.substr(number.length-2,number.length);
    number = number || 0;
    places = !isNaN(places = Math.abs(places)) ? places : 2;
    thousand = thousand || ",";
    decimal = decimal || ".";
    var negative = number < 0 ? "-" : "",
    i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "",
    j = (j = i.length) > 3 ? j % 3 : 0;
    return '$'+negative + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : "");
}
